package config

import (
	"context"
	"log"
	"time"
	"wisdomCoach/global"

	"github.com/redis/go-redis/v9"
	"github.com/spf13/viper"
)

func initRedis() {
	rdb := redis.NewClient(&redis.Options{
		Addr:     viper.GetString("redis.addr"),
		Password: viper.GetString("redis.password"), // 没有密码，默认值
		DB:       viper.GetInt("redis.db"),          // 默认DB 0
	})
	// 创建一个带有 30 秒超时的上下文
	ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
	defer cancel() // 确保在函数退出前调用 cancel()

	// 调用 Ping 方法并设置超时
	_, err := rdb.Ping(ctx).Result()
	if err != nil {
		if err == context.DeadlineExceeded {
			log.Fatalf("Request timed out after 30 seconds")
		} else {
			log.Fatalf("redis链接失败: %v", err)
		}
	}

	global.REDIS = rdb
}
